<?php
/**
 * Model de Usuario
 * @filesource  06/04/2011
 * @author      Estrada Virtual <http://estradavirtual.com.br>
 * @copyright   Copyright <2011> Estrada Virtual
 * @package     <<application>>
 * @subpackage  <<application>>.application.models
 * @version     $Id$
 */
class Model_Usuario extends App_Db_Table
{
    protected $_name             = 'usuario';
    protected $_primary          = array('id_usuario');
    protected $_dependentTables  = array('Model_Anotacao', 'Model_Artefato', 'Model_ClienteUsuario', 'Model_Tarefa', 'Model_TarefaAtividade');

    public function logar($sUser, $sPassword)
    {
        if (!$sUser || !$sPassword) {
            return false;
        }

        $oAuthAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter(),
                                                      'usuario',
                                                      'st_login',
                                                      'st_senha',
                                                      'md5(?)');
        $oAuthAdapter->setIdentity($sUser);
        $oAuthAdapter->setCredential($sPassword);

        $oAuth   = Zend_Auth::getInstance();
        $oResult = $oAuth->authenticate($oAuthAdapter);
        if ($oResult->isValid()) {
            $rowObject = $oAuthAdapter->getResultRowObject(null, array('st_senha'));
            if ('T' == $rowObject->bo_admin) {
                $rowObject->role = 'admin';
            } else {
                $rowObject->role = 'comum';
            }
            $oAuth->getStorage()->write($rowObject);
            return true;
        }
        return false;
    }

    static public function getTaretaAtual()
    {
        return Zend_Db_Table::getDefaultAdapter()->select()->from('usuario', 'fk_tarefa_atual')
                                                 ->where('id_usuario = ?', Zend_Auth::getInstance()->getIdentity()->id_usuario)
                                                 ->query()->fetchColumn();
    }

    public function entrarTarefa($idUsuario, $idTarefa)
    {
        $row = $this->find($idUsuario)->current();
        if (null != $row->fk_tarefa_atual) {
            $this->sairTarefa($idUsuario);
        }

        $this->update(array('fk_tarefa_atual' => $idTarefa), array('id_usuario = ?' => $idUsuario));
    }

    public function sairTarefa($idUsuario)
    {
        $row = $this->find($idUsuario)->current();
        if (null == $row->fk_tarefa_atual) {
            return false;
        }

        $idTarefa = $row->fk_tarefa_atual;
        $this->update(array('fk_tarefa_atual' => null), array('id_usuario = ?' => $idUsuario));

        // Gravar atividade
        $tarefaAtividade = new Model_TarefaAtividade();
        $rowTarefaAtividade = $tarefaAtividade->getAtual($idTarefa, $idUsuario);
        $rowTarefaAtividade->dt_fim = date('Y-m-d H:i:s');
        $rowTarefaAtividade->save();
    }
}
